/* 
 * $Id$
 *
 * UMKC Robotics 2009
**/

#ifndef IOABSTRACTION_H
#define IOABSTRACTION_H

#ifdef HAVE_HWABSTRACTION
#  include "hwabstraction.h"
#endif

const int io_max_idx = 50;

typedef enum {

  io_channel_stdin = 0,
  io_channel_stdout,
  io_channel_stderr,
  io_channel_usr_01,
  io_channel_usr_02,
  io_channel_usr_03,
  io_channel_usr_04,
  io_channel_usr_05,
  io_channel_usr_06,
  io_channel_usr_07,
  io_channel_usr_08,
  io_channel_usr_09,
  io_channel_usr_10,
  io_channel_all = io_max_idx

} BotIOIdx;

typedef enum {

  ioctl_init=0,
  ioctl_disable,
  ioctl_reset,
  ioctl_clear

} BotIOCmd; 

/**************
 * Need to implement some type of read/write combo - 
 * probably read_uint8, read_int8, read_uint32, etc..
**/


typedef struct bot_io_controller {

  void (*io_ctl)(BotIOIdx, BotIOCmd);

} BotIOController;

#endif


